package com.macro.mall.tiny.service.impl;

import com.macro.mall.tiny.common.api.CommonResult;
import com.macro.mall.tiny.mbg.model.UmsMember;
import com.macro.mall.tiny.service.RedisService;
import com.macro.mall.tiny.service.UmsMenberServcie;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;

import java.util.Random;

/**
 * @author ：czx
 * @date ：Created in 2021/7/12 10:24
 * @descriptioin:
 * @modified By：
 */
@Service
public class UmsMenberServcieImpl implements UmsMenberServcie {
    //注入操作redis的接口
    @Autowired
    private RedisService redisService;

    @Value("${redis.key.prefix.authCode}")
    private String REDIS_KEY_PREFIX_AUTH_CODE;

    @Value("${redis.key.expire.authCode}")
    private Long AUTH_CODE_EXPRIRE_SECONDS;






    @Override
    public CommonResult gennerateAuthCode(String telephone) {
        if (telephone.length()!=11&&telephone!=null){
            return CommonResult.failed("请输入正确的手机号");
        }

        //操作字符串的工具类,无锁,不安全
        StringBuilder sb=new StringBuilder();
        //new 一个随机数
        Random random=new Random();
        //六位随机数
        for (int i=0;i<6;i++){
            //random.nextInt(10)--随机生成0~6的随机正整数
            //StringBuffer中赋值的时候可以通过它的append方法.
            sb.append(random.nextInt(10));
        }
        //验证码绑定手机号,并存储到redis
        redisService.set(REDIS_KEY_PREFIX_AUTH_CODE+telephone,sb.toString());
        //设置好超时时间 parm--验证码+从配置文件设置好的超时时间
        redisService.expire(REDIS_KEY_PREFIX_AUTH_CODE+telephone,AUTH_CODE_EXPRIRE_SECONDS);


        return CommonResult.success(sb.toString(),"获取验证码成功");
    }

    @Override
    public CommonResult verifyAuthCode(String telephone, String authCode) {
        //1-先校验验证码
        if (StringUtils.isEmpty(authCode)){
            return CommonResult.failed("请输入验证码");
        }
        //2-获取redis绑定的手机号的随机生成的六位数
        String realAuthCode=redisService.get(REDIS_KEY_PREFIX_AUTH_CODE+telephone);

        //3-和前端传过来的做对比

        if (authCode.equals(realAuthCode)){
            return CommonResult.success(null,"验证码校验成功");
        }else {
            return CommonResult.failed(" ");
        }

    }

    @Override
    public UmsMember getById(Long memberId) {
        return null;
    }

    @Override
    public void updateIntegration(Long memberId, int i) {

    }
}


























